#ifndef _IRESOURCE_H_
#define _IRESOURCE_H_

#include "Material.h"
#include "Geometry.h"

namespace DeviousRenderer
{
	enum EResourceType
	{
		RT_VERTEXBUFFER = 0x010000,
		RT_INDEXBUFFER = 0x020000,
		RT_CONSTANTBUFFER = 0x030000,
		RT_STRUCTUREDBUFFER = 0x040000,
		RT_BYTEADDRESSBUFFER = 0x050000,
		RT_INDIRECTARGSBUFFER = 0x060000,
		RT_TEXTURE1D = 0x070000,
		RT_TEXTURE2D = 0x080000,
		RT_TEXTURE3D = 0x090000
	};

	class IResource
	{
	public:
		IResource();
		virtual ~IResource();
		virtual	EResourceType		GetType() = 0;
		virtual ID3D11Resource*		GetResource() = 0;
		static unsigned int		GetGlobalID() { return m_sGlobalID; }
		unsigned int			GetInnerID() { return m_uiInnerID; }
	private:
		static unsigned int		m_sGlobalID;
		unsigned int			m_uiInnerID;
	};
}
#endif//_IRESOURCE_H_